Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

282
Views
¿Por qué list(x for x in a) es más rápido para a=[0] que para a=[]?

Probé list(x for x in a) con tres versiones diferentes de CPython. En a = [0] es significativamente más rápido que en a = [] :

 3.9.0 64-bit 3.9.0 32-bit 3.7.8 64-bit a = [] a = [0] a = [] a = [0] a = [] a = [0] 465 ns 412 ns 543 ns 515 ns 513 ns 457 ns 450 ns 406 ns 544 ns 515 ns 506 ns 491 ns 456 ns 408 ns 551 ns 513 ns 515 ns 487 ns 455 ns 413 ns 548 ns 516 ns 513 ns 491 ns 452 ns 404 ns 549 ns 511 ns 508 ns 486 ns

Con tuple en lugar de list , es lo esperado al revés:

 3.9.0 64-bit 3.9.0 32-bit 3.7.8 64-bit a = [] a = [0] a = [] a = [0] a = [] a = [0] 354 ns 405 ns 467 ns 514 ns 421 ns 465 ns 364 ns 407 ns 467 ns 527 ns 425 ns 464 ns 353 ns 399 ns 490 ns 549 ns 419 ns 465 ns 352 ns 400 ns 500 ns 556 ns 414 ns 474 ns 354 ns 405 ns 494 ns 560 ns 420 ns 474 ns

Entonces, ¿por qué la list es más rápida cuando (y el iterador del generador subyacente) tiene que hacer más?

Probado en Windows 10 Pro 2004 de 64 bits.

Código de referencia:

 from timeit import repeat setups = 'a = []', 'a = [0]' number = 10**6 print(*setups, sep=' ') for _ in range(5): for setup in setups: t = min(repeat('list(x for x in a)', setup, number=number)) / number print('%d ns' % (t * 1e9), end=' ') print()

Tamaños de bytes, que muestran que no se sobreasigna para la entrada [] pero sí para la entrada [0] :

 >>> [].__sizeof__() 40 >>> list(x for x in []).__sizeof__() 40 >>> [0].__sizeof__() 48 >>> list(x for x in [0]).__sizeof__() 72
over 4 years ago · Santiago Trujillo
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!